package test.bytes;

import static org.hamcrest.CoreMatchers.nullValue;

import org.apache.commons.codec.binary.Hex;
import org.junit.Test;

/**
 * 进制转化
 * 数字在java中只有十进制的表示方式，字面量（0x55)除外，其他进制的表示都用String来表示。
 * 各种进制的字符串之间的相互转化，可以通过10进制来操作，先把别的字符串转换成10进制数字，在把10进制数字转化成别的进制字符串
 * @author 风蚕
 *
 */
public class RadixChange {
	
	//二进制字面量：0B或ob开头
	//八进制字面量：0开头
	//十六进制字面量：0x或0X开头
	/**
	 * 其他进制字符串制转10进制数字
	 */
	@Test
	public void toDecimal() {
		//1、第一种
		int decimal = Integer.valueOf("7ff", 16);
		System.out.println(decimal);
		//2、第二种
		decimal = Integer.parseInt("-11", 7);
		System.out.println(decimal);
		//无符号
		decimal = Integer.parseUnsignedInt("11", 8);
		System.out.println(decimal);
	}
	
	/**
	 * 十进制数字转其他各种字符串
	 */
	@Test
	public void decimalToOthreString() {
		//1、第一种，可转成各种机制
		String str = Integer.toString(10, 5);
		System.out.println(str);
		//2、转成16、8、2进制字符串
		String hexString = Integer.toHexString(30);//16
		String binaryString = Integer.toBinaryString(30);//2
		String octalString = Integer.toOctalString(30);//8
		//3、format可转换16进制、8进制、10进制
		str = String.format("%x、%o、%d", 17,17,17);//16进制、8进制、10进制
		System.out.println(str);
		
	}
	
	

}
